1. Field of Invention
The present invention relates generally to a system and method aiding in efficiently performing data-intensive operations. In particular, it relates to a system to delegate virtual storage access method related file operations to a storage server using an in-band RPC mechanism.
2. Discussion of Prior Art
Many business processes today are very data-intensive, and the efficiency of computer programs in processing many megabytes or gigabytes of data for these operations is a key factor in business effectiveness. The problem faced is how to adopt data-intensive operations in a manner that is viable in a commercial data-processing environment. An attractive option is to perform computations locally, where the data is stored (e.g. on a storage server). The benefits of performing computations where the data is stored result from applying system resources more efficiently. Application processing at the storage system magnifies the total throughput that can be achieved by the host application. Furthermore, by avoiding the transmission of large volumes of data through multiple hardware and software layers, processing can often be achieved in a shorter time at lower cost.
However, to have practical use, any solution based on the idea of performing computations close to storage must address a number of component problems enumerated below:                enabling a wide range of application-specific processing where the data is stored;        allowing dynamic activation of and binding to the available application-specific processing capabilities;        preserving data access security;        preserving the stability of the basic data storage functionality; and        allowing maintenance and management of the application-specific functionality.        
Prior work has addressed some component problems in the following manner:                Add custom operations to the storage server that allow some data processing at the storage server. This has been done in the past. For example, the search functions in the Extended Count-Key-Data (ECKD) command set provided by control units can be regarded as an example of this approach. However, this puts the goal of maintaining and upgrading the added custom functions into conflict with the goal of preserving the stability of the storage server: Any added function or modified implementation constitutes a new code load for the storage server, which entails significant development and testing cost. Also, the scope of application-specific functions is highly constrained because the storage server environment does not present a general-purpose programming environment. For example, it might not support familiar threading and scheduling constructs, dynamic memory allocation, virtual memory, scripting languages, and installation of nonstandard drivers.        Add a dedicated application server to the system, connected to the storage server by normal SAN connections, that performs the data-intensive computation. This approach has cost disadvantage because of added hardware. Especially when the data is owned by mainframe computers and stored in the CKD (Count-Key-Data) format, because small inexpensive servers that can access such data are not readily available. In addition, there are significant problems for ensuring data security while allowing access from the dedicated application server. Also, this approach cannot achieve the potential benefits of higher bandwidth and better response time that can result from incorporating the data processing operations into the storage server.        Provide a “disklet container” on storage devices like hard disks. This offers an interesting approach complementary to this invention. It provides a facility on hard disks into which an ordinary user of storage can download executable code and cause it to be executed against the storage objects on that hard disk to which that user has access. To make this acceptable in a multi-user system, only code that can rigorously and automatically be proved to be well-behaved is accepted into the facility. One key weakness of this approach is that it does not offer a solution for hosts that access CKD data. Another, more intrinsic difficulty is that the requirement of provable good behavior significantly constrains the function that can be achieved.        
The following references outline some of the above-mentioned prior art techniques and suffer from many of the drawbacks outlined above. These references fail to teach or suggest a solution that is targeted to solve the same problem that the present invention addresses.
The Domenikos et al. (U.S. Pat. No. 5,838,910) provides for systems and methods for executing application programs from a memory device linked to a server at an internet site. Domenikos et al. discloses a system and method for executing programs stored at a remote server. In the various embodiments described in this patent, the application programs are loaded into the client's memory. It should, however, be noted that Domenikos et al. do not address the problem of running adjuncts on a server that are used by controlling applications.
The U.S. patent to Blackwell, Jr. et al. (U.S. Pat. No. 5,857,191) teaches a Web application server with secure common gateway interface. Blackwell, Jr. et al. disclose an application server which processes web browser client requests conforming to the CGI (Common Gateway Interface) protocol. The server described in this patent has a fixed set of CGI (or CGI-like) scripts installed that can be used by the clients and does not provide adjuncts and an adjunct I/O facility. The CGI scripts run on the same platform as the web server and affect the function of the web server. In addition, the patent is focused on the field of web servers and clients.
The U.S. patent to Thomlinson et al. (U.S. Pat. No. 6,532,542 B1) provides for protected storage of core data secrets. Thomlinson et al. discloses a storage system that controls access to data stored on it based on client program attributes. The system is built primarily for controlling access to data objects stored on the server. It should, however, be noted that the Thomlinson et al. patent does not address the problem of running client-specific adjuncts on the storage facility.
The U.S. patent to Prust (U.S. Pat. No. 6,952,724 B2) provides a network-based remote data storage system having multiple access interfaces. Prust discloses a storage server which manages several storage pools for different clients and allows the clients to manipulate the data using various access methods like HTTP, email, WebDAV etc. It should be noted that Prust does not teach or suggest the use of adjuncts. Also, the applications running on the storage server run on the same platform as the storage engine and are not adjuncts that are executed with protection.
The U.S. patent publication to Chen et al. (2004/0233910 A1) provides for a storage area network using data communication protocol. Chen et al. disclose a system for communicating with storage servers and for allocating and using storage space on the storage servers. However, it should be noted that Chen et al.'s system does not teach or suggest the use of adjuncts.
The patent publication to Sikdar et al. (US 2005/0268032 A1) teaches a semantic processor storage server architecture, and in particular, teaches a method to decrease the complexity of storage servers (by reducing the number of integrated circuits) by utilizing semantic processors. Sikdar et al., however, fail to teach or suggest the use of adjuncts.